Add gdk_display_manager_peek
authorMatthias Clasen <mclasen@redhat.com>
Sat, 23 Mar 2013 23:39:58 +0000 (19:39 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 23 Mar 2013 23:39:58 +0000 (19:39 -0400)
Instead of failing with an error if no GDK backend is found like
gdk_display_manager_get(), the new peek function silently returns
NULL.

docs/reference/gdk/gdk3-sections.txt
gdk/gdk.symbols
gdk/gdkdisplaymanager.c
gdk/gdkdisplaymanager.h

index e409bbc0eb25977cdee9187730cf16da822adda1..34069e47b3229add68b45f87ebee1e3857614cdc 100644 (file)
@@ -171,6 +171,7 @@ GdkDisplayClass
 <TITLE>GdkDisplayManager</TITLE>
 GdkDisplayManager
 gdk_display_manager_get
+gdk_display_manager_peek
 gdk_display_manager_get_default_display
 gdk_display_manager_set_default_display
 gdk_display_manager_list_displays
index 6e30e9a2031da15e4efeef40d0ba519f4683a80f..9eb67ccc297e2e8faae466e547cf9dd460e8db2a 100644 (file)
@@ -101,6 +101,7 @@ gdk_display_is_closed
 gdk_display_keyboard_ungrab
 gdk_display_list_devices
 gdk_display_manager_get
+gdk_display_manager_peek
 gdk_display_manager_get_default_display
 gdk_display_manager_get_type
 gdk_display_manager_list_displays
index b15aeb0afbb6140ad70dc5649a424eb717ce9bd5..2d2e684256d2599d98f9190a970e0e40cf4e786a 100644 (file)
@@ -288,6 +288,29 @@ static GdkDisplayManager *manager = NULL;
  **/
 GdkDisplayManager*
 gdk_display_manager_get (void)
+{
+  gdk_display_manager_peek ();
+
+  if (manager == NULL)
+    g_error ("No GDK backend found (%s)", allowed_backends);
+
+  return manager;
+}
+
+/**
+ * gdk_display_manager_peek:
+ *
+ * Gets the singleton #GdkDisplayManager object. If GDK could
+ * not be initialized, %NULL is returned.
+ *
+ * Returns: (transfer none): The global #GdkDisplayManager singleton,
+ *     or %NULL if GDK could not be initialized. gdk_parse_args(),
+ *     gdk_init(), or gdk_init_check() must have been called first
+ *
+ * Since: 3.10
+ */
+GdkDisplayManager *
+gdk_display_manager_peek (void)
 {
   if (manager == NULL)
     {
@@ -369,13 +392,7 @@ gdk_display_manager_get (void)
             }
 #endif
         }
-
       g_strfreev (backends);
-
-      if (manager == NULL)
-        g_error ("No GDK backend found (%s)", allowed_backends);
-
-      GDK_NOTE (MISC, if (manager) g_message ("Using %s", G_OBJECT_TYPE_NAME (manager)));
     }
 
   return manager;
index 419b3f57399eda2fd46e6a4c66d918c6b0590233..4392af04f4360f0c80affa8024e45f2ad1f0e900 100644 (file)
@@ -43,6 +43,8 @@ G_BEGIN_DECLS
 GType              gdk_display_manager_get_type            (void) G_GNUC_CONST;
 
 GdkDisplayManager *gdk_display_manager_get                 (void);
+GDK_AVAILABLE_IN_3_10
+GdkDisplayManager *gdk_display_manager_peek                (void);
 GdkDisplay *       gdk_display_manager_get_default_display (GdkDisplayManager *manager);
 void               gdk_display_manager_set_default_display (GdkDisplayManager *manager,
                                                             GdkDisplay        *display);